package com.mju.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mju.pojo.Address;
import com.mju.pojo.Product;

import java.util.List;

public interface IAddressService {
    /**
     * address是通过表单收集的数据，但是uid无法收集，需要通过控制层的session传递过来
     * username也是需要控制层传递过来的
     * @param uid 设置收获地址的所属用户id
     * @param username 设置创建人和修改人的姓名
     * @param address 设置其余字段
     */
    void addNewAddress(Integer uid, String username, Address address);

    /**
     * 根据uid获取所有收获地址，并根据一定规则，进行排序。
     * @param uid
     * @return
     */
    List<Address> getByUid(Integer uid);

    /**
     * 修改某个用户的某条收获地址为默认收获地址
     * @param aid
     * @param uid
     * @param username
     */
    void setDefault(Integer aid, Integer uid, String username);

    /**
     * 删除用户选中的收获地址
     * @param aid 收获地址id
     * @param uid 地址所属的用户id
     * @param username 用户名
     */
    void delete(Integer aid, Integer uid, String username);

    /**
     * 获取选中的收获地址的详细信息
     * @param aid
     * @param uid
     * @return
     */
    Address getByAid(Integer aid, Integer uid);

    /**
     * 根据aid获取对应的地址信息
     * @param aid
     * @return
     */
    Address queryAddressByAid(Integer aid);

    /**
     * 根据uid查询所有地址信息
     * @param uid
     * @return
     */
    List<Address> queryAllAddressesByUid(Integer uid);

    /**
     * 获取所有地址信息
     * @param currentPage
     * @param pageSize
     * @return
     */
    IPage<Address> queryAllAddressInfo(Integer currentPage, Integer pageSize);

    /**
     * 根据name获取地址信息
     * @param currentPage
     * @param pageSize
     * @param name
     * @return
     */
    IPage<Address> queryAddressByName(Integer currentPage, Integer pageSize, String name);
    IPage<Address> queryAddressByUid(Integer currentPage, Integer pageSize, Integer uid);
    IPage<Address> queryAddressByPhone(Integer currentPage, Integer pageSize, String phone);

    // 修改地址
    Integer updateAddress(Integer aid,Integer uid, Address address);
}
